<?php

require_once(BaseConfig::LoadClass('objeto_base.class.php'));
require_once(BaseConfig::LoadClass('filtro.class.php'     ));
require_once(BaseConfig::LoadClass('abc.class.php'        ));
require_once(BaseConfig::LoadClass('carga_excel.class.php'));
require_once(BaseConfig::LoadClass('load_cvs.class.php'   ));

class Sepomex extends ObjetoBase {
  var $intIdSepomex     ;
  var $intDCodigo       ;
  var $strDAsenta       ;
  var $strDTipoAsenta   ;
  var $strDMunicipio    ;
  var $strDEstado       ;
  var $strDCiudad       ;
  var $intDCP           ;
  var $intCEstado       ;
  var $intCOficina      ;
  var $strCCP           ;
  var $intCTipoAsenta   ;
  var $intCMnpio        ;
  var $intIdAsentaCPCons;
  var $strDZona         ;
  var $intCCveCiudad    ;
  
  function Sepomex($intIdSepomex = 0) {
    $arrMapaDatos = Array();
    
    $arrMapaDatos['id_sepomex'      ] = Array('NombreVariable' => 'intIdSepomex'     , 'TipoVariable' => 'I');
    $arrMapaDatos['d_codigo'        ] = Array('NombreVariable' => 'intDCodigo'       , 'TipoVariable' => 'N');
    $arrMapaDatos['d_asenta'        ] = Array('NombreVariable' => 'strDAsenta'       , 'TipoVariable' => 'S');
    $arrMapaDatos['d_tipo_asenta'   ] = Array('NombreVariable' => 'strDTipoAsenta'   , 'TipoVariable' => 'S');
    $arrMapaDatos['d_mnpio'         ] = Array('NombreVariable' => 'strDMunicipio'    , 'TipoVariable' => 'S');
    $arrMapaDatos['d_estado'        ] = Array('NombreVariable' => 'strDEstado'       , 'TipoVariable' => 'S');
    $arrMapaDatos['d_ciudad'        ] = Array('NombreVariable' => 'strDCiudad'       , 'TipoVariable' => 'S');
    $arrMapaDatos['d_CP'            ] = Array('NombreVariable' => 'intDCP'           , 'TipoVariable' => 'N');
    $arrMapaDatos['c_estado'        ] = Array('NombreVariable' => 'intCEstado'       , 'TipoVariable' => 'N');
    $arrMapaDatos['c_oficina'       ] = Array('NombreVariable' => 'intCOficina'      , 'TipoVariable' => 'N');
    $arrMapaDatos['c_CP'            ] = Array('NombreVariable' => 'strCCP'           , 'TipoVariable' => 'S');
    $arrMapaDatos['c_tipo_asenta'   ] = Array('NombreVariable' => 'intCTipoAsenta'   , 'TipoVariable' => 'N');
    $arrMapaDatos['c_mnpio'         ] = Array('NombreVariable' => 'intCMnpio'        , 'TipoVariable' => 'N');
    $arrMapaDatos['id_asenta_cpcons'] = Array('NombreVariable' => 'intIdAsentaCPCons', 'TipoVariable' => 'N');
    $arrMapaDatos['d_zona'          ] = Array('NombreVariable' => 'strDZona'         , 'TipoVariable' => 'S');
    $arrMapaDatos['c_cve_ciudad'    ] = Array('NombreVariable' => 'intCCveCiudad'    , 'TipoVariable' => 'N');
    
    $this->__ArmarDatosPrivados('cat_sepomex', $arrMapaDatos, 'id_sepomex');
    $this->SeleccionarPorIndice($intIdSepomex);
  }
  
  /**
   * Funcion que obtiene los options de un select para los estados de la republica.
   * 
   * 
   * @param int $intIdEdoSel Estado que estará seleccionado por default. Si empieza con una C, el estado seleccionado se basará en un codigo postal
   */
  static function ObtenerSelectEstados($intIdEdoSel = 0) {
    if(substr($intIdEdoSel, 0, 1) == "C") {
      $intIdEdoSel = Variables::GetValueByTable("cat_sepomex", "d_codigo", "c_estado", substr($intIdEdoSel, 1));
    }
    
    $strOpciones = Variables::GetSelectByTable("cat_sepomex", "DISTINCT(c_estado)", "d_estado", $intIdEdoSel, "", "", "ORDER BY d_estado ASC");
    
    return $strOpciones;
  }
  
  /**
   * Funcion que obtiene los options de un select para los municipios de la republica.
   * 
   * @param int $intIdEdoSel  Estado del que se obtienen los municipios. Si empieza con una C, se maneja como si fuera un codigo postal
   * @param int $intIdMpioSel Municipio seleccionado
   */
  static function ObtenerSelectMunicipios($intIdEdoSel, $intIdMpioSel = 0) {
    if(substr($intIdEdoSel, 0, 1) == "C") {
      $arrTmp       = explode(",", Variables::GetValueByTable("cat_sepomex", "d_codigo", "CONCAT(c_estado, ',', c_mnpio)", substr($intIdEdoSel, 1)));
      $intIdEdoSel  = $arrTmp[0];
      $intIdMpioSel = $arrTmp[1];
    }
    
    $strOpciones = Variables::GetSelectByTable("cat_sepomex", "DISTINCT(c_mnpio)", "d_mnpio", $intIdMpioSel, "", "", "WHERE c_estado = $intIdEdoSel ORDER BY d_mnpio ASC");
    
    return $strOpciones;
  }
  
  /**
   * Funcion que obtiene los options de un select para los municipios de la republica.
   * 
   * @param int $intIdEdoSel  Estado del que se obtienen los municipios. Si empieza con una C, se maneja como si fuera un codigo postal
   * @param int $intIdMpioSel Municipio seleccionado
   * @param int $intIdColSel  Colonia seleccionada
   */
  static function ObtenerSelectColonias($intIdEdoSel, $intIdMpioSel = 0, $intIdColSel = 0) {
    if(substr($intIdEdoSel, 0, 1) == "C") {
      $arrTmp       = explode(",", Variables::GetValueByTable("cat_sepomex", "d_codigo", "CONCAT(c_estado, ',', c_mnpio, ',', id_asenta_cpcons)", substr($intIdEdoSel, 1)));
      $intIdEdoSel  = $arrTmp[0];
      $intIdMpioSel = $arrTmp[1];
      $intIdColSel  = $arrTmp[2];
    }
    
    $strOpciones = Variables::GetSelectByTable("cat_sepomex", "DISTINCT(id_asenta_cpcons)", "d_asenta", $intIdColSel, "", "", "WHERE c_estado = $intIdEdoSel AND c_mnpio = $intIdMpioSel ORDER BY d_asenta ASC");
    
    return $strOpciones;
  }
  
  
  /**
   * Funcion que obtiene el CP que se refiere al estado, municipio y colonia seleccionado
   * 
   * @param int $intIdEdoSel  Estado del que se obtienen los municipios
   * @param int $intIdMpioSel Municipio seleccionado
   * @param int $intIdColSel  Colonia seleccionada
   */
  static function ObtenerCPColonia($intIdEdoSel, $intIdMpioSel, $intIdColSel) {
    $oConecta = new Conecta();
    $strConsulta = "SELECT d_codigo FROM cat_sepomex WHERE c_estado = $intIdEdoSel AND c_mnpio = $intIdMpioSel AND id_asenta_cpcons = $intIdColSel";
    $oConecta->Consulta($strConsulta);
    return $oConecta->Field('d_codigo');
  }
  
  static function CPCorrecto($intCP) {
    if((Variables::GetValueByTable("cat_sepomex", "d_codigo", "d_codigo", $intCP) - 0) == ($intCP - 0)) {
      return true;
    } else {
      return false;
    }
  }
  
  static function ObtenerNombreEstado($intIdEdo) {
    return Variables::GetValueByTableMultipleIndex("cat_sepomex", "c_estado", "d_estado", "$intIdEdo");
  }
  
  static function ObtenerNombreMunicipio($intIdEdo, $intIdMpio) {
    return Variables::GetValueByTableMultipleIndex("cat_sepomex", "c_estado,c_mnpio", "d_mnpio", "$intIdEdo,$intIdMpio");
  }
  
  static function ObtenerNombreColonia($intIdEdo, $intIdMpio, $intIdCol) {
    return Variables::GetValueByTableMultipleIndex("cat_sepomex", "c_estado,c_mnpio,id_asenta_cpcons", "d_asenta", "$intIdEdo,$intIdMpio,$intIdCol");
  }
  
  static function ObtenerNombreCiudad($intIdEdo, $intIdMpio, $intIdCol) {
    return Variables::GetValueByTableMultipleIndex("cat_sepomex", "c_estado,c_mnpio,id_asenta_cpcons", "d_ciudad", "$intIdEdo,$intIdMpio,$intIdCol");
  }
}

class FiltroSepomex extends Filtro {
  function FiltroSepomex() {
    $arrMapaDatos['d_codigo'        ] = "d_codigo"        ;
    $arrMapaDatos['d_asenta'        ] = "d_asenta"        ;
    $arrMapaDatos['d_tipo_asenta'   ] = "d_tipo_asenta"   ;
    $arrMapaDatos['d_mnpio'         ] = "d_mnpio"         ;
    $arrMapaDatos['d_estado'        ] = "d_estado"        ;
    $arrMapaDatos['d_ciudad'        ] = "d_ciudad"        ;
    $arrMapaDatos['d_CP'            ] = "d_CP"            ;
    $arrMapaDatos['c_estado'        ] = "c_estado"        ;
    $arrMapaDatos['c_oficina'       ] = "c_oficina"       ;
    $arrMapaDatos['c_CP'            ] = "c_CP"            ;
    $arrMapaDatos['c_tipo_asenta'   ] = "c_tipo_asenta"   ;
    $arrMapaDatos['c_mnpio'         ] = "c_mnpio"         ;
    $arrMapaDatos['id_asenta_cpcons'] = "id_asenta_cpcons";
    $arrMapaDatos['d_zona'          ] = "d_zona"          ;
    $arrMapaDatos['c_cve_ciudad'    ] = "c_cve_ciudad"    ;
    
    parent::CrearFiltro("cat_sepomex", "id_sepomex", $arrMapaDatos, "Busqueda", "", "", "SEPOMEX");
  }
}

class Carga_Sepomex extends CargaExcel {
  function Carga_Sepomex() {
    parent::CargaExcel();
    $arrMapaDatos['d_codigo'        ] = "N" ;
    $arrMapaDatos['d_asenta'        ] = "S-";
    $arrMapaDatos['d_tipo_asenta'   ] = "S-";
    $arrMapaDatos['d_mnpio'         ] = "S-";
    $arrMapaDatos['d_estado'        ] = "S-";
    $arrMapaDatos['d_ciudad'        ] = "S-";
    $arrMapaDatos['d_CP'            ] = "N" ;
    $arrMapaDatos['c_estado'        ] = "N" ;
    $arrMapaDatos['c_oficina'       ] = "N" ;
    $arrMapaDatos['c_CP'            ] = "S-";
    $arrMapaDatos['c_tipo_asenta'   ] = "N" ;
    $arrMapaDatos['c_mnpio'         ] = "N" ;
    $arrMapaDatos['id_asenta_cpcons'] = "N" ;
    $arrMapaDatos['d_zona'          ] = "S-";
    $arrMapaDatos['c_cve_ciudad'    ] = "N-";
    
    $arrReferencias = array();
    
    $this->Init("Sepomex", "cat_sepomex", $arrMapaDatos);
    
    $this->strTextoIntroduccionArchivo = "Cargar archivo de texto SEPOMEX";
    
    $this->intPrimeraLinea       = 2;
    $this->intCargarSoloCompleto = 0;
    $this->bolLimpiarTablaAntes  = true;
    
    $this->__arrInfoSaltarLinea[] = "Todos Los Clientes";
    $this->__arrInfoSaltarLinea[] = ""                  ;
    $this->__arrInfoSaltarLinea[] = "Código Cliente"    ;
  }
  
  function AbrirCargador() {
    $this->oLoadXLS = new LoadCVS();
  }
}

class ABC_Sepomex extends ABC_Base {
  function ABC_Sepomex() {
    $strClaseBase     = "Sepomex"      ;
    $strClaseFiltro   = "FiltroSepomex";
    $strCampoMostrar  = "nombre"       ;
    $strOpcionListado = "abc_sepomex"  ;
    $strOpcionGuardar = "abc_sepomex"  ;
    $strClaseCarga    = "Carga_Sepomex";

    $arrMapaDatos = array();
    $arrMapaDatos['d_codigo'        ] = "d_codigo"        ;
    $arrMapaDatos['d_asenta'        ] = "d_asenta"        ;
    $arrMapaDatos['d_tipo_asenta'   ] = "d_tipo_asenta"   ;
    $arrMapaDatos['d_mnpio'         ] = "d_mnpio"         ;
    $arrMapaDatos['d_estado'        ] = "d_estado"        ;
    $arrMapaDatos['d_ciudad'        ] = "d_ciudad"        ;
    $arrMapaDatos['d_CP'            ] = "d_CP"            ;
    $arrMapaDatos['c_estado'        ] = "c_estado"        ;
    $arrMapaDatos['c_oficina'       ] = "c_oficina"       ;
    $arrMapaDatos['c_CP'            ] = "c_CP"            ;
    $arrMapaDatos['c_tipo_asenta'   ] = "c_tipo_asenta"   ;
    $arrMapaDatos['c_mnpio'         ] = "c_mnpio"         ;
    $arrMapaDatos['id_asenta_cpcons'] = "id_asenta_cpcons";
    $arrMapaDatos['d_zona'          ] = "d_zona"          ;
    $arrMapaDatos['c_cve_ciudad'    ] = "c_cve_ciudad"    ;
    
    $this->Inicializar($strClaseBase, $arrMapaDatos, $strOpcionListado, $strOpcionGuardar, $strCampoMostrar, $strClaseFiltro, "", "", $strClaseCarga);
    
    $this->bolABCLista             = true ;
    $this->bolABCListaOcultarTD    = true ;
    $this->bolPosibleNuevoElemento = false;
    $this->intTipoGuardado         = 1    ;
    $this->intNumeroRes            = 20   ;
    $this->bolSoloLectura          = false;
    $this->bolABCListaMostrarInfo  = true ;
  }
}

?>